import 'dart:io';

import 'package:PollOnLine/utils/logger_utils.dart';
import 'package:PollOnLine/utils/utils.dart';
import 'package:get/get.dart';

import '../../manager/AppSetInfoManager.dart';
import '../../manager/UserInfoManager.dart';
import '../../utils/amap_utils.dart';
import '../../utils/sp_utils.dart';
import '../../values/CommonParam.dart';
import '../login/login_view.dart';
import '../login/login_view_ipad.dart';
import '../main/main_view.dart';
import '../main/main_view_ipad.dart';
import '../web/WebViewPage.dart';
import 'welcome_state.dart';

class WelcomeLogic extends GetxController {
  final WelcomeState state = WelcomeState();
  @override
  void onInit() {
    super.onInit();
    if (!isPad(Get.context!)) {
      // 手机强制强制竖屏
      setScreenLandscape(false);
    }
  }

  @override
  Future<void> onReady() async {
    super.onReady();
    // 判断是否要弹出 隐私政策 Dialog
    // true弹出  false不弹出
    state.visible.value = await sp.getBool(CommonParam.FIRST_LOGIN) ?? true;

    if (!state.visible.value) {
      initApp();
    }
  }

  // 隐私政策 Dialog CallbackOk
  void dialogCallbackOk() {
    sp.setBool(CommonParam.FIRST_LOGIN, false);
    initApp();
  }

  // 隐私政策 Dialog CallbackCancel
  void dialogCallbackCancel() => exit(0);

  // 隐私政策 Dialog OnTap
  void dialogOnTap() => Get.to(() => WebViewPage(
        title: '用户协议和隐私政策',
        url: AppSetInfoManager().getAgreementUrl(),
      ));

  Future<void> initApp() async {
    // 初始化用户信心管理
    await UserInfoManager().init();
    // 初始化友盟sdk
    // initUmeng();
    // 初始化高德地图sdk
    AMapUtils.setApiKey();
    AMapUtils.init();

    // 跳转页面
    goToPage();
  }

  /// 跳转页面
  Future<void> goToPage() async {
    if (Platform.isIOS) {
      await Future.delayed(const Duration(milliseconds: 500));
    }
    if (UserInfoManager().isLogin()) {
      kLog.i(isPad(Get.context!));
      // 跳转首页
      if (isPad(Get.context!)) {
        Get.offAll(() => const MainPageIpad(title: '首页'));
      } else {
        Get.offAll(() => const MainPage(title: '首页'));
      }
    } else {
      if (isPad(Get.context!)) {
        // 跳转登录页面
        Get.offAll(() => const LoginPageIpad(title: '首页'));
      } else {
        // 跳转登录页面
        Get.offAll(() => const LoginPage(title: "登陆"));
      }
    }
  }

  @override
  void onClose() {
    super.onClose();
  }
}
